#pragma once

#ifndef _CMODIFIER_H_
#define _CMODIFIER_H_

// Standard Modifiers
#define MOD_NONE		0x00
//Basic
#define MOD_DEF			0x01
#define MOD_HP			0x02
#define MOD_HPP			0x03
#define MOD_CONVMPTOHP	0x04
#define MOD_MP			0x05
#define MOD_MPP			0x06
#define MOD_CONVHPTOMP	0x07
//Stats
#define MOD_STR			0x08
#define MOD_DEX			0x09
#define MOD_VIT			0x0A
#define MOD_AGI			0x0B
#define MOD_INT			0x0C
#define MOD_MND			0x0D
#define MOD_CHR			0x0E
//Resistances
#define MOD_FIRERES		0x0F
#define MOD_ICERES		0x10
#define MOD_AIRRES		0x11
#define MOD_EARTHRES	0x12
#define MOD_THUNDERRES	0x13
#define MOD_WATERRES	0x14
#define MOD_LIGHTRES	0x15
#define MOD_DARKRES		0x16
//Attack
#define MOD_ATT			0x17
#define MOD_RATT		0x18 // Ranged Attack
//Accuracy
#define MOD_ACC			0x19
#define MOD_RACC		0x1A // Ranged Accuracy
//Misc
#define MOD_ENMITY		0x1B

// Other Modifiers
//Attack
#define MOD_MATT		0x20 // Magic Attack
#define MOD_MACC		0x21 // Magic Accuracy
//Weaponskill
#define MOD_WSACC		0x30 // Weaponskill Accuracy
//Misc
#define MOD_EVA			0x40
#define MOD_MPHEAL		0x41 // MP Recovered while healing
#define MOD_HPHEAL		0x42 // HP Recovered while healing
//Crafting
#define MOD_ALCHEMY		0x50
#define MOD_BONE		0x51
#define MOD_CLOTH		0x52
#define MOD_COOK		0x53
#define MOD_SMITH		0x54
#define MOD_GOLDSMITH	0x55
#define MOD_FISH		0x56
#define MOD_LEATHER		0x57
#define MOD_WOOD		0x58
//Skills - Weapons
#define MOD_ARCHERY		0x60
#define MOD_AXE			0x61
#define MOD_CLUB		0x62
#define MOD_DAGGER		0x63
#define MOD_GAXE		0x64
#define MOD_GSWORD		0x65
#define MOD_HTH			0x66
#define MOD_KATANA		0x67
#define MOD_MARKSMAN	0x68
#define MOD_POLEARM		0x69
#define MOD_SCYTHE		0x6A
#define MOD_STAFF		0x6B
#define MOD_SWORD		0x6C
//Skills - Misc
#define MOD_THROW		0x70
#define MOD_SHIELD		0x71
#define MOD_PARRY		0x72
#define MOD_GUARD		0x73
//Skills - Instruments
#define MOD_WIND		0x80
#define MOD_STRING		0x81
#define MOD_SINGING		0x82
//Skills - Magic
#define MOD_SUMMONING	0x90
#define MOD_NINJUTSU	0x91
#define MOD_ENFEEBLE	0x92
#define MOD_DIVINE		0x93
#define MOD_DARK		0x94
#define MOD_HEALING		0x95
#define MOD_ENHANCE		0x96
#define MOD_ELEM		0x97
#define MOD_BLUE		0x98
//Damage % Taken
#define MOD_DMG			0xA0 
#define MOD_DMGPHYS		0xA1
#define MOD_DMGBREATH	0xA2
#define MOD_DMGMAGIC	0xA3
//Speeds %
#define MOD_HASTE		0xB0
#define MOD_SLOW		0xB1
#define MOD_SPELLINT	0xB2 // Spell Interruption Rate %
#define MOD_MOVE		0xB3
//Unknown
#define MOD_UNKNOWN		0xFF


class CModifier {
public:
	CModifier();
	~CModifier();

	unsigned char getModID();
	void setModID(unsigned char modifier);

	char getModAmount();
	void setModAmount(char amount);

private:
	unsigned char m_id;
	// -128 to 128
	char m_amount;
};

#endif